The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Online shopping and other ecommerce sites enable end users to browse, select, and order products over a network connection. In many cases, these sites implement a relational database management system (RDBMS) to store and maintain information about the products that are available. When the end user queries the site for information about a particular product or set of products, the site accesses product information from product records stored in the RDBMS and returns this information for display to the end user.
In a computer system that enables users to order custom manufactured products, describing products that are available for ordering presents special challenges for computer-implemented data definitions. The data definitions should provide a way to describe a broad range of goods quickly and flexibly in terms of data characteristics. Each product has numerous attributes and the potential to be combined with or used with a plurality of other products, representing vast numbers of permutations. For example, users may have thousands of choices of individual products and many products may be compatible with or act as accessories to other products. These issues are particularly complex in the case of custom manufactured framed or mounted products in which a customer can select or upload an arbitrary image, choose a frame and mat or mounting, glazing or other protection, and then order the assembled product; a particular customer-defined product may be entirely unique in the history of all previously ordered products, yet the computer system must be able to determine if manufacturing the product is possible or practical given what the customer selected.
In this context, relational database structures and other methods of describing products and their attributes have proven inadequate and inflexible. Typical RDBMS implementations have required extensive programming of stored procedures or other custom code to resolve compatibilities and match accessories to products. Further, the number of stored records required in a custom manufacturing context is impractical. As a simple example, if shirts are offered in 50 styles, with 10 possible colors, and 5 possible sizes, then the RDBMS would have to store 2,500 records to represent all unique stock numbers (SKUs) for products that a customer could potentially order. However, customers also might never order a particular SKU because it represents an unusual or illegal combination. For example, a men's shirt style with tangerine and pink stripes in a Baby size may not be available for ordering. As a more complex example, the permutations for a product such as a framed print are potentially in the trillions when attributes are constrained, and infinite when attributes are continuously variable within broad ranges. Therefore, generating fixed records for every conceivable product permutation would waste storage.